/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo.persistencia;

import java.util.*;
import java.sql.*;
import modelo.IReclamacion;
import modelo.Reclamacion;
/**
 *
 * @author LEONIC
 */
public class ReclamacionDAO implements IReclamacionDAO{

        public void create(IReclamacion reclamacion) {

        String sql = "insert into reclamacion(id,cod_articulo,leido,observaciones) values (?,?,?,?)";
        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res2 = stmt.executeQuery("Select max(id) from reclamacion");
            int identif=0;
            if (res2.next()) {
                identif = res2.getInt("max(id)");
            }
            identif=identif+1;
            System.out.println("id:" + identif);
            PreparedStatement stm1 = Persistencia.createConnection().prepareStatement(sql);
            stm1.setInt(1, identif);
            stm1.setInt(2, reclamacion.getCodArticulo());
            stm1.setBoolean(3, false);
            stm1.setString(4, reclamacion.getObservaciones());

            stm1.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public IReclamacion read(int ID) {
        IReclamacion c = null;
        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT * FROM innoxel.reclamacion r,innoxel.articulo a WHERE r.cod_articulo=a.cod_articulo AND r.leido=false AND r.id=" + ID);
            String nombre, observaciones;
            int idreclamacion, codarticulo;
            if (res.next()) {
                idreclamacion = res.getInt("id");
                codarticulo = res.getInt("cod_articulo");
                nombre = res.getString("nombre");
                observaciones = res.getString("observaciones");
                c = new Reclamacion(idreclamacion,codarticulo,false,observaciones,nombre);
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return c;
    }
 

    public List<IReclamacion> list() {
        List<IReclamacion> reclamaciones = new ArrayList<IReclamacion>();

        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT * FROM innoxel.reclamacion r,innoxel.articulo a WHERE r.cod_articulo=a.cod_articulo AND r.leido=false");
            String nombre, observaciones;
            int idreclamacion, codarticulo;
            while (res.next()) {

                idreclamacion = res.getInt("r.id");
                codarticulo = res.getInt("r.cod_articulo");
                nombre = res.getString("nombre");
                observaciones = res.getString("r.observaciones");
                reclamaciones.add(new Reclamacion(idreclamacion,codarticulo,false,observaciones,nombre));
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return reclamaciones;
    }

        public void update(IReclamacion reclamacion) {
        String sql=null;
          sql = "UPDATE reclamacion SET leido=true WHERE id = ?";

          try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setInt(1, reclamacion.getIDReclamacion());

            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

   public void delete(IReclamacion reclamacion) {
        String sql = "DELETE FROM reclamacion WHERE id = ?";
        try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setInt(1, reclamacion.getIDReclamacion());

            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }
}
